package com.yhg.aop;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;


/**
 * 1 添加依赖
 * 2 写主要逻辑
 * 3 添加注解（@Aspect @Around），配置切面和切入点
 * 4 学习链接：https://blog.csdn.net/Cr1556648487/article/details/126777903
 */
@Component
@Aspect
public class OrderAdvice {

    //统计目标方法运行时间
    @Around("execution(* com.yhg.*.*.*(..))")
    public Object method(ProceedingJoinPoint pjp) throws Throwable {
        //当前时间
        long start = System.nanoTime();
        //运行目标方法
        Object result = pjp.proceed();
        //运行结束
        long end = System.nanoTime();
        //打印结果
        System.out.println("目标方法"+pjp.toShortString()+"的运行时间："+(end-start)+"ns");
        return result;
    }
}
